package spring.cloud.tasks.client.item_task_processor.task_item;

import com.alibaba.fastjson.JSON;
import lombok.Getter;
import lombok.Setter;

import java.util.HashMap;
import java.util.Map;

public class ServerTaskItemsSnapshotInfo {
    //为什么会有这两种状态,原因是如果更新task items操作是一个原子操作,那么则没有问题，但是因为跨多个任务项 会涉及到时间间隔 故采用状态值来告诉客户端 只要状态不是初始化成功那么就不要开始处理。
    public static final String task_items_status_initing = "initing";
    public static final String task_items_status_inited = "inited";
    public Map<String, String> taskItemToProcessorIdMap = new HashMap<String, String>();
    @Setter
    @Getter
    private int version = 0;
    @Setter
    @Getter
    private String status;//注意:一次分配成功后 距离下次调度分配很长时间

    public static ServerTaskItemsSnapshotInfo parse(byte[] bytes) {
        return JSON.parseObject(new String(bytes), ServerTaskItemsSnapshotInfo.class);
    }

    public byte[] getBytes() {
        return JSON.toJSONString(this).getBytes();
    }
}
